package com.xingchi.tornado.log.aspect.anno;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 操作日志注解
 *
 * @author xiaoya
 * @date 2024/9/26 15:28
 */
@Documented
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface OperateLog {

    /**
     * 模块名
     */
    String module() default "";

    /**
     * 具体操作
     */
    String operate() default "";
    
    /**
     * 审计级别，数字越大级别越高
     * 0: 普通操作（默认）
     * 1: 重要操作
     * 2: 敏感操作
     * 3: 核心操作
     */
    int level() default 0;
    
    /**
     * 业务标签，可用于分类查询
     */
    String[] tags() default {};
    
    /**
     * 是否记录请求参数
     */
    boolean logRequest() default true;
    
    /**
     * 是否记录响应参数
     */
    boolean logResponse() default true;
    
    /**
     * 是否对敏感字段进行脱敏处理
     */
    boolean desensitize() default true;
    
    /**
     * 需要排除的请求参数字段名
     */
    String[] excludeParams() default {};

}
